#include <iostream>
#include <cstdio>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

extern char**environ;
const char* string = "HELLO=XXXXXXXXXXX";

int main()
{
    putenv((char*)string);
    pid_t id = fork();
    if (id == 0)
    {
        //child
        // char *const argv[] = {
        //     (char*)"ls",
        //     (char*)"--color",
        //     (char*)"-a",
        //     (char*)"-l",
        //     nullptr
        // };
        char *const argv[] = {
            (char*)"other",
            nullptr
        };

        // char *const env[] = {
        //     (char*)"HELLO1=xxxxxxxxxx",
        //     (char*)"HELLO2=xxxxxxxxxx",
        //     (char*)"HELLO3=xxxxxxxxxx",
        //     (char*)"HELLO4=xxxxxxxxxx"
        // };

        execvpe("./other", argv, environ);
        //execv("/usr/bin/ls", argv);
        //execlp("ls", "ls", "--color", "-l", "-a", nullptr);
        exit(1);
    }

    pid_t rid = waitpid(id, nullptr, 0);
    if (rid > 0)
    {
        printf("等待子进程成功\n");
    }

    //int n = execl("/bin/lss", "lsss", "-l", "-a", nullptr);
    // printf("return value:%d\n", n);
    // printf("我是myexec进程, pid:%d\n", getpid());
    // execl("./other", "other", nullptr);

    return 0;
}